/*
    从路由中提取出单独的js文件
    全局前置路由守卫
*/
import router from "@/router"
//配置路由全局前置导航守卫
import store from '@/store'
// import { remove } from "lodash"
// import VueRouter from "vue-router"
import NProgress from 'nprogress'
import 'nprogress/nprogress.css'


router.beforeEach((to, from, next) => {
    NProgress.start()
    //判断当前进入的路由界面是否需要登录
    if (to.path == '/login') {
        next();
    }
    if (to.matched.length == 0 || to.matched.some(element => element.meta.isLogin)) {//需要登录
        //判断是否已经登录，看token是否存在
        if (store.state.login.userinfo.token) {
            //vuex中是否已经有动态导航了,读取store.menu中的dyMenuList,
            if (store.state.menu.dyMenuList.length != 0) {//有导航
                next()
            } else {//没有导航
                //获取导航菜单
                store.dispatch('menu/getMenuList')
                    .then((myBaseRoutes) => {
                        console.log('没有导航--->获取导航', myBaseRoutes)
                        //把导航菜单追加到路由实例上
                        //不能直接push ， 需要调方法
                        myBaseRoutes.forEach((element) => {
                            router.addRoute(element)
                        })
                    })
                next();
            }
            //如果vuex中也没有动态导航，则取获取动态菜单导航  
            next();

        } else {
            next('/login')
        }

    }
    else {
        next()//不需要登录
    }
})

router.afterEach(()=>{
    NProgress.done()
})